package leetcode.interviewClassics;

/**
 * @author Cheng Jun
 * Description: 字符串压缩。利用字符重复出现的次数，编写一种方法，实现基本的字符串压缩功能。
 * 比如，字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短，则返回原先的字符串。你可以假设字符串中只包含大小写英文字母（a至z）
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/compress-string-lcci
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 * @version 1.0
 * @date 2021/10/29 23:06
 */
public class compressString {

    public static void main(String[] args) {
        System.out.println(compressString("aa"));
    }

    // 前面的字母和后面的字母 相等的话，就计数
    // 不相等的话，前面字母就进入 新字符串中
    // 最后连续相等的 字母 进入 新字符串中
    static String compressString(String s) {
        if (s.length() == 0) {
            return s;
        }
        StringBuilder result = new StringBuilder();
        char pre = s.toCharArray()[0];
        int count = 0;
        for (char c : s.toCharArray()) {
            if (pre != c) {
                result.append(pre).append(count);
                pre = c;
                count = 1;
            } else {
                count++;
            }
        }
        result.append(pre).append(count);
        if (result.toString().length() >= s.length()) {
            return s;
        } else
            return result.toString();
    }

}
